package com.doit.demo02;

import com.doit.demo.Person;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class test03 {
    public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {
        Class c = Class.forName("com.doit.demo.Person");
//        //空参构造的简单方法
//        Object obj = c.newInstance();
//        System.out.println(obj);


//        //获取所有的 公共权限的方法 包括继承
//        Method[] methods = c.getMethods();
//        for (Method method : methods) {
//            System.out.println(method);
//        }

//        //获取所有的方法 包括私有 但不包括继承
//        Method[] methods = c.getDeclaredMethods();
//        for (Method method : methods) {
//            System.out.println(method);
//        }

        //获取setAge方法
        Method setAge = c.getMethod("setAge", int.class);
        Object obj = c.newInstance();
        setAge.invoke(obj, 28);
        //获取getAge方法
        Method getAge = c.getMethod("getAge");
        Object age = getAge.invoke(obj);
        System.out.println(age);
    }
}
